1 Introduction

Taxes are not just a way to generate revenue, they are also a means to incentivise ‘good’ things and dis-incentivise ‘bad’ things. Think tobacco & alcohol duty, sugar taxes, vehicle emissions and so on. Local taxes on the other hand do not seem to follow the same approach. The Council Tax, of which local authorities keep 100%, doesn’t really incentivise anything at all as it’s based on a notional dwelling value. The same is true of business rates, based on the rental value of the property, of which local authorities keep 50% with some discussion of making this 100% in future.

Interestingly council tax rates are set by local authorities within a ‘referendable’ threshold. A rise above that threshold triggers a local referendum. We return to this later.

In the current ‘climate emergency’ both central and local governments are considering ways to force greenhouse gas emissions reductions through increased energy efficiency standards for new-builds and large scale investment in energy efficiency and low carbon heating retrofit. Some of this discussion has also focused on lobbying to remove the VAT due on retrofit work on the basis that the exisiting approach can incentivise complete reconstruction, with increased embodied carbon emissions, rather than retrofit which generally (?) has less.

In this paper we explore an extension of this concept by using the local tax system to incentivise dwelling owners to reduce their local tax charge by tying a new local carbon tax rate to the emissions ‘band’ of the dwelling. In this model the higher the emissions attributable to the dwelling, the higher the local carbon tax levied.

Clearly such an approach could simply replace the council tax and possibly also the business rates although we focus here on residential dwellings alone. However this would cause a significant inequity for tenants who currently pay council tax, would be unable to make energy efficiency or low carbon energy investments in their home but would still have to pay whatever local carbon tax rate applied to the dwelling. We therefore propose two forms of local carbon tax, one that focuses on incentivising low carbon building structures and one which focuses on reducing emissiomns caused by the behaviour of the occupant themselves. Both will act to reduce emissions. We do this by:

  • a local dwelling fabric carbon tax - paid by building (dwelling) owners based on some proxy for (or an actual calculation of) the total GHG emissions due to space heating;
  • a local consumption carbon tax - paid by occupants based on an some proxyfor (or actual calculation of) the emissions due to total energy consumption less those that ‘should’ be due to space heating. Obviously if an occupant over-heats the dwelling, they will then be paying more tax… and vice versa (yes?).

This is an attmept to seperate the ‘responsibility’ of the dwelling owner for increasing the energy efficiency and reducing the emissions due to the building fabric from the responsibility of the ‘occupant’ for the as lived emissions. In many cases these will be the same individual(s) but not in the case of tenants. It is regularly observed that dwellings built or retrofitted to apparently high energy efficienct standards show a performance gap when actually occupied largely due to occupant energy using and especially ventilation practices. The idea is to seperate these processes and use the parallel local carbon tax system to incentivise lower emissions from both.

Of course we need to be careful. A goal of reducing dwelling fabric emissions could be met by switching to all-electric heating and buying electricity from a purely renewable retailer. You can then use as much energy as you can afford - there will be no additional fabric-based or occupant-based tax to pay. In this sense this could be an entirely avoidable tax. But maybe that is what we want… provided the grid can handle it.

Naturally in the long run such a system is unsustainable. Just as vehicle excise linked to engine emissions will generate less and less revenue over time as engines become cleaner and cleaner, so we would hope that our local carbon taxes would also tend to zero. In this case local authorities would need to evolve the system in such a way as to preserve revenue while still maintaining downward pressure on dwelling based emissions. They could return to some other form of progressive local income tax for example.

In the remainder of this paper we explore a number of ways of calculating both tax rates under a range of scenarios. These are:

  • revenue neutral - it generates the same revenue as the council tax did but puts downward pressure on emissons
  • revenue positive - it generates more revenue than the council tax did so that the ‘surplus’ can be recycled into energy efficiency and/or low emissions heat interventions while also putting downward pressure on emissons

An over-riding principle is that those at the lower end of the income distribution should be no worse off and preferably better off than they were under the council tax. This may be tricky to model given the council tax rebate system. However, since energy consumption as a percentage of total expenditure declines with income (poor people pay proportionally more) but absolute energy consumption and emissions increase with income, there is clear scope to use tax revenues collected from ‘high’ emitters to support low income emissions transitions.

We could assume that higher income higher emitters would have the capital to address their emissions but this may not be the case. They may also have sufficient income not to have to care about ‘paying’ for their emissions. The fact that the carbon tax rate is not entirely correlated with ability to pay at an individual level (inefficient homes running on fossil fuels are not only the preserve of the very rich) means there may be little incentive for very high income households to change. In this case we may need an additional approach such as a ‘stamp duty’ * emissions multiplier that is paid on the purchase of properties worth over a certain threshold. This would act to penalise those who had not bothered to invest since their purchasor would drive the price down (they would be about to take a tax hit). Clearly a very expensive house which has zero emissions (as above) would attract a zero tax charge. It might even significantly drive down the value of high emissions properties. Again, this may be what we want but if so it would significantly impact the asset values of people in larger, older and higher emissions homes - some of whom are not well off.

Finally, making the tax charge a dwelling and household level charge means that there is an incentive to increase occupant density since the cost is shared. We know that economies of scale are substantial for energy - the amount of energy used does not increase linearly with occupancy. Reducing single occupancy and incentivising multi-occupancy homes therefore decreases per capita emissions and also decreases total emissions. This could be a potential positive spill-over effect of the system we propose and might align with the Governments proposed changes to the permitted development rights provided they are used to increase occupancy and not just increase unoccupied but heated space!

NB: on vs off gas implications? Off gas = rural so usually oil. What about wood?

2 Modelling the tax

In order to explore the revenue and tax load implications of these ideas we ideally need a dataset which links:

  • current council tax paid
  • estimated or actual annual space heating energy input, cost and emissions. Issues: identifying actual emissons from electricity depends on retailer & tariff; same for gas (e.g. green gas/biomethane offerings)
  • estimated or actual annual non-space heating energy input, cost and emissions. Issues: as above?
  • household income
  • household demographics (as the council tax rebate of 25% appiles to single adult households)
  • benefits status (?)

for each dwelling in all local authorities. We could then calculate the council and carbon tax charges per dwelling and see what happens under our different scenarios.

Unfortunately no such dataset exists.

However there are a number of ways of getting close:

  • EPC data: provides an estimate of kWh/m2 (a measure of energy input) and CO2e as a basis for the EPC banding. We could use the kWh/m2 value but this reduce the charge for large houses with big emissions simply due to size. We do not want that since it is the absolute value of emissions that really matters here. So we would use the kWh value instead. There are a number of reasons why we would not want to use the CO2e or EPC banding as the basis for our calculation, not least that it assumes a fixed and outdated carbon intensity for electricity. Unfortunately EPC data does not tell us about actual occupant-driven energy consumption. This would have to be estimated on the basis of very few sensible co-variates. EPCs are also only available on dwellings that have been sold since XXX or are currently rented. This excludes a sub-set of properties which are probably older and less energy efficient.
  • SAVE data: this sample of 4,000+ households from the Solent region has neither EPC or gas consumption data
  • NEED anonymised sample data: XX check XX
  • SERL smart meter data: this has all (or nearly all) of the attributes we need but 1) is for a sample of the population and 2) will not have complete EPC data since dwellings that are not rented or have not been recently sold will tend not to have an EPC.

2.1 EPC-based models

Partial coverage, no household attributes so no distributional analysis

2.2 NEED-based models

?

2.3 SERL-based models

Data: https://beta.ukdataservice.ac.uk/datacatalogue/studies/study?id=8666#!/documentation

No income just has proxies:

  • Household level:
    • C3: Thinking about the working situation of each member of your household aged 16 and over, including you, how many would you say fall into each category below?
    • C4: Including you, how many people in your household hold a degree (e.g. BA, BSc) or higher qualification (e.g. MA, PhD, PGCE)?
  • Individual respondent:
    • D3: Which best describes your current employment situation?
    • D4: How well would you say you yourself are managing financially these days? Would you say you are …

2.4 Summary

3 Could this be done?

3.1 Politically?

As we understand it local authorities can set council tax rates to 0 without triggering a referendum! But can they create a new local tax system of the kind we propose to replace it? Would it need new legislation? Or could it be created from a process that already exists? And if they then had to resurrect the Concil Tax to recover declining carbon tax revenue, would that automaticallly trigger a referendum?!

Perhaps more interestingly if a strongly ‘green’ local authority put a local tax system based on this approach to a local referendum with clear calculations of its effects for different social groups, would it be approved? From a purely rational self-interest persepctive it should if the majority would be better off because the bulk of the tax charge might fall on the higher emitters…

3.2 Practically?

How would a local authority collect the data it needs at the dwelling level? Could it:

  • mandate full EPCs on all dwellings? Or charge a penalising rate to those that do not have them (they are not expensive to procure)
  • model likely consumption levels & emissions for each dwelling and so incentivise those whose emissons are actually lower to agree to the annual energy consumption being collected from their smart meters? But what to do about those who are higher?
  • mandate the collection of annual energy input data from the smart meter system for all dwellings, in much the same way that it is mandatory to declare income for tax purposes? The smart meter data includes tariff (XX check XX) and so carbon intensity (XX check XX)

4 Should this be done?

Why not?

5 Playing games

Inevitably any system that can be gamed for gain will be. Examples might include:

  • ?

We would need to think carefully how to structure the system to avoid this.

6 Emissions Levy Case Study

In the remoinder of this paper we develop a model of an emissions levy using LSOA level data on emissions derived from the CREDS place-based emissions calculator. We apply carbon ‘values’ to a number of emissions categories to estimate the levy revenue that would be generated for each LSOA in year 1 of such a levy. We then sum these values to given anoverall levy revenue estimate for the area in the case study.

We then use estimates of the cost of retrofitting EPC band dwellings D-E and F-G together with estimates of the number of such dwellings in each of the LSOAs to calculate the likely cost of such upgrades in each LSOA and for the whole area in the case study.

We then compare the distributions of the two to understand whether sufficient revenue would be generated within each LSOA or in the case styudy area to enable the per-LSOA or whole case study area costs of the energy efficiency upgrades to be met. In doing so we also analyse the extent to which redistribution of revenue from high emissions areas (households) would be required.

It should be noted that this is area level analysis using mean emissions per household. It will not capture within-LSOA hetergeneity in emissions and so will almost certaonly underestimate the range of the household level emissions levy value.

6.1 Data and boundary files

We will use a number of datasets to analyse the patterns of emissions. Some of these are in the repo as they are public access, others are not (or too large).

This anlaysis is at LSOA level.

6.1.1 Useful LSOA labels and codes

Load lSOA look-up table

## Loading LSOA look-up table with useful labels

6.1.2 Boundaries

LSOA - this is all going to be LSOA analysis

## Loading Solent LSOA boundaries from file
## Rows of data: 1136
## Selecting Southampton
## Rows of data: 148

Check with a map…

## Boundary data co-ord system: 27700

Figure 6.1: LSOA check map (shows LSOA, MSOA and ward names when clicked

6.1.3 IMD 2019

Labeled as 2019 but actually 2018 data. Source: https://www.gov.uk/government/statistics/english-indices-of-deprivation-2019

## Overall IMD decile counts
## [1] 32844
## 
##   1 (10% most deprived)                       2                       3 
##                    3284                    3284                    3285 
##                       4                       5                       6 
##                    3284                    3285                    3284 
##                       7                       8                       9 
##                    3284                    3285                    3284 
## 10 (10% least deprived) 
##                    3285
## # Southampton IMD decile counts
## [1] 148
## 
##   1 (10% most deprived)                       2                       3 
##                      19                      24                      24 
##                       4                       5                       6 
##                      26                      15                      14 
##                       7                       8                       9 
##                       7                      14                       4 
## 10 (10% least deprived) 
##                       1
## 
##   1 (10% most deprived)                       2                       3 
##             0.128378378             0.162162162             0.162162162 
##                       4                       5                       6 
##             0.175675676             0.101351351             0.094594595 
##                       7                       8                       9 
##             0.047297297             0.094594595             0.027027027 
## 10 (10% least deprived) 
##             0.006756757
## 
## 50% least deprived  50% most deprived 
##                 40                108
## 
## 50% least deprived  50% most deprived 
##          0.2702703          0.7297297

These are LSOA level deprivation indices. Decile is the English & Welsh decile:

  • 1 = 10% most deprived LSOAs in England & Wales;
  • 10 = 10% least deprived LSOA in England & Wales.

Figure 6.2: LSOA IMD map (shows LSOA, MSOA, ward names and IMD decile when clicked

6.1.4 Fuel poverty

2019 estimates - do we actually use this data?

Source: https://www.gov.uk/government/statistics/sub-regional-fuel-poverty-data-2021

6.2 CREDS place-based emmissions estimates

See https://www.creds.ac.uk/why-we-built-a-place-based-carbon-calculator/

“The highest carbon areas have an average per person footprint more than eight times larger than the lowest carbon areas.”

“We are not effectively targeting decarbonisation policies in high carbon areas. For example, the recently collapsed Green Homes Grants scheme provided a grant to cover 66% of the cost (up to £5,000) of retrofitting homes. For people claiming certain benefits, the cap was raised to 100% and £10,000. But the calculator shows that the big polluters are the large homes in very wealthy areas. In these neighbourhoods, the issue is not affordability but motivation. For high income households, energy costs are a small proportion of their expenditure and so the cost savings for retrofitting their home are inconsequential. As there are no policy “sticks” to incentivise action in the collective interest it is unsurprising that high carbon neighbourhoods have not prioritised decarbonisation."

Source: https://www.carbon.place/

Notes:

  • Emissions are presented as per capita…
  • Appears to be based on residential/citizen emissions only - does not appear to include commercial/manufacturing/land use etc
## [1] 32844
Table 6.1: Data summary
Name credsLsoaDT
Number of rows 148
Number of columns 29
Key LSOA11CD
_______________________
Column type frequency:
character 7
factor 1
numeric 21
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
LAD11NM 0 1 11 11 0 1 0
WD18NM 0 1 6 13 0 16 0
LSOA11CD 0 1 9 9 0 148 0
LSOA11NM 0 1 16 16 0 148 0
WD20CD 0 1 9 9 0 16 0
RUC11 0 1 19 19 0 1 0
oacSuperGroupName 0 1 15 35 0 7 0

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
IMD_Decile_label 0 1 FALSE 10 4: 26, 2: 24, 3: 24, 1 (: 19

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
CREDStotal_kgco2e 0 1 12005970.95 3950315.01 5330300.00 8440200.00 12166000.00 14846325.00 22704000.00 ▇▆▇▃▁
CREDSgas_kgco2e2018 0 1 1234937.68 382064.37 10767.20 1017372.50 1233750.00 1459772.50 2586400.00 ▁▃▇▂▁
CREDSelec_kgco2e2018 0 1 735265.41 195095.99 418140.00 614700.00 694160.00 825945.00 1740510.00 ▇▇▁▁▁
CREDSotherEnergy_kgco2e2011 0 1 90723.71 153254.16 0.00 27785.00 47460.50 80246.00 1279200.00 ▇▁▁▁▁
CREDSallHomeEnergy_kgco2e2011 0 1 2151650.51 473661.33 1185534.00 1866010.00 2114738.00 2380087.50 4765800.00 ▅▇▂▁▁
CREDScar_kgco2e2018 0 1 1310046.55 355771.51 333540.00 1094005.00 1357330.00 1542900.00 2099440.00 ▁▅▇▇▂
CREDSvan_kgco2e2018 0 1 199990.55 291846.23 11328.00 94336.75 140101.00 197145.00 2807200.00 ▇▁▁▁▁
pop_2018 0 1 1707.84 412.64 1080.00 1460.00 1620.00 1762.50 3900.00 ▇▅▁▁▁
energy_pc 0 1 18.47 5.29 9.50 14.69 17.28 21.88 44.48 ▇▇▂▁▁
pc_Heating_Electric 0 1 18.63 13.32 2.49 8.75 15.44 24.71 85.27 ▇▅▁▁▁
epc_total 0 1 466.49 184.08 211.00 341.75 409.00 548.25 1140.00 ▇▆▂▁▁
epc_newbuild 0 1 82.12 101.68 11.00 33.00 52.00 83.25 798.00 ▇▁▁▁▁
epc_A 0 1 0.55 2.10 0.00 0.00 0.00 0.00 13.00 ▇▁▁▁▁
epc_B 0 1 57.51 85.92 0.00 9.75 27.50 69.25 606.00 ▇▁▁▁▁
epc_C 0 1 147.58 86.28 39.00 87.00 122.50 184.25 492.00 ▇▅▁▁▁
epc_D 0 1 172.40 41.86 37.00 144.25 168.50 197.00 322.00 ▁▅▇▂▁
epc_E 0 1 64.81 27.76 17.00 45.00 62.50 76.25 220.00 ▇▇▂▁▁
epc_F 0 1 18.67 20.27 1.00 7.00 12.50 22.00 150.00 ▇▁▁▁▁
epc_G 0 1 4.99 9.73 0.00 1.00 2.50 5.00 96.00 ▇▁▁▁▁
IMD_Decile 0 1 4.11 2.31 1.00 2.00 4.00 6.00 10.00 ▇▇▅▃▁
IMDScore 0 1 27.26 13.62 5.75 16.53 25.09 36.08 67.17 ▆▇▅▂▁
## 
## Southampton 
##         148

Now we need to convert the per capita to totals and then use the number of electricity meters as a proxy for the number of dwellings

Ideally we’d have Census 2021 data but we don’t have it yet. So instead we’ll use the number of electricity meters for 2018 which aligns with the CREDS data (might be an over-estimate if a dwelling has 2…)

First check the n electricity meters logic…

## LSOAs (check):
## [1] 148

Check that the number of electricity meters reasonably correlates with the number of EPCs from the CREDS data. We would not expect the number of gas meters to correlate due to non-gas dwellings etc.

That assumption seems sensible…

6.2.1 Estimate per dwelling emissions

We want to present the analysis in ‘per dwelling’ or ‘per household’ terms so we need to convert the total kg CO2e values to per dwelling values by dividing by the number of electricity meters.

## # Summary of per dwelling values
Table 6.2: Data summary
Name …[]
Number of rows 148
Number of columns 9
Key NULL
_______________________
Column type frequency:
numeric 9
________________________
Group variables None

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
CREDStotal_kgco2e_pdw 0 1 17126.66 7014.73 5845.64 11905.74 15464.94 21050.67 44958.42 ▆▇▃▁▁
CREDSgas_kgco2e2018_pdw 0 1 1758.06 626.82 12.82 1358.01 1727.03 2166.35 3659.41 ▁▅▇▃▁
CREDSelec_kgco2e2018_pdw 0 1 1004.41 109.16 655.50 938.64 988.98 1044.12 1459.95 ▁▆▇▂▁
CREDSmeasuredHomeEnergy_kgco2e2018_pdw 0 1 2762.47 641.02 1123.58 2322.68 2744.44 3169.45 4876.37 ▁▆▇▂▁
CREDSotherEnergy_kgco2e2011_pdw 0 1 117.63 166.94 0.00 40.87 64.42 112.06 1151.73 ▇▁▁▁▁
CREDSallHomeEnergy_kgco2e2018_pdw 0 1 2880.09 584.12 1506.15 2476.45 2813.93 3235.29 5031.52 ▂▇▅▂▁
CREDScar_kgco2e2018_pdw 0 1 1848.64 566.47 613.65 1413.59 1851.17 2258.37 3546.98 ▃▆▇▃▁
CREDSvan_kgco2e2018_pdw 0 1 266.07 335.98 22.61 130.24 194.83 265.58 2801.60 ▇▁▁▁▁
CREDSpersonalTransport_kgco2e2018_pdw 0 1 2114.71 684.48 760.81 1607.59 2131.50 2558.57 4223.23 ▅▇▇▂▁

Examine patterns of per dwelling emissions for sense.

6.2.1.1 All emissions

Figure 6.3 shows the LSOA level per dwelling ‘all emissions’ in Tonnes CO2e as estimated by the CREDS tool against the Index of Multiple Deprivation (IMD) score and uses the size of the points to represent the % of dwellings with electric heating. Colour is used to represent the IMD decile where decile 1 is the 10% least deprived.

## Per dwelling T CO2e - all emissions
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Scatter of LSOA level all per dwelling emissions against IMD score

Figure 6.3: Scatter of LSOA level all per dwelling emissions against IMD score

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Correlation test (pwcorr)
## 
##  Pearson's product-moment correlation
## 
## data:  credsLsoaDT$IMDScore and credsLsoaDT$CREDStotal_kgco2e_pdw
## t = -9.9011, df = 146, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.7213850 -0.5262861
## sample estimates:
##        cor 
## -0.6338111
##    LSOA11CD            WD18NM          All_Tco2e_per_dw
##  Length:148         Length:148         Min.   : 5.846  
##  Class :character   Class :character   1st Qu.:11.906  
##  Mode  :character   Mode  :character   Median :15.465  
##                                        Mean   :17.127  
##                                        3rd Qu.:21.051  
##                                        Max.   :44.958
##     LSOA11CD     WD18NM All_Tco2e_per_dw
## 1: E01017249    Shirley         44.95842
## 2: E01017148    Bassett         43.54419
## 3: E01017197 Freemantle         41.42910
## 4: E01017224   Peartree         31.22609
## 5: E01017180    Coxford         30.70376
## 6: E01017214  Millbrook         30.16370
##     LSOA11CD    WD18NM All_Tco2e_per_dw
## 1: E01017245 Redbridge         7.967564
## 2: E01017241 Redbridge         7.871967
## 3: E01032738    Bevois         7.870684
## 4: E01017182   Coxford         7.344557
## 5: E01017139   Bargate         7.015385
## 6: E01017140   Bargate         5.845638

6.2.1.2 Home energy use

Figure 6.4 uses the same plotting method to show emissions per dwelling due to gas use. This preserves the negative correlation shown in the previou splot for ‘all emissions’ but with some variation, notably for LSOAs which have a higher % ofelectric heating.

## Per dwelling T CO2e - gas emissions
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   12.82 1358.01 1727.03 1758.06 2166.35 3659.41
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Scatter of LSOA level gas per dwelling emissions against IMD score

Figure 6.4: Scatter of LSOA level gas per dwelling emissions against IMD score

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Correlation test (pwcorr)
## 
##  Pearson's product-moment correlation
## 
## data:  credsLsoaDT$IMDScore and credsLsoaDT$CREDSgas_kgco2e2018_pdw
## t = -7.7513, df = 146, p-value = 1.421e-12
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.6450947 -0.4147371
## sample estimates:
##      cor 
## -0.53995

Figure 6.5 uses the same plotting method to show emissions per dwelling due to electricity use. This is mnuch more random… although note the LSOAs with higher % electric heating.

## Per dwelling T CO2e - elec emissions
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Scatter of LSOA level elec per dwelling emissions against IMD score - who emits?

Figure 6.5: Scatter of LSOA level elec per dwelling emissions against IMD score - who emits?

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Correlation test (pwcorr)
## 
##  Pearson's product-moment correlation
## 
## data:  credsLsoaDT$IMDScore and credsLsoaDT$CREDSelec_kgco2e2018_pdw
## t = -2.1523, df = 146, p-value = 0.03301
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.32744768 -0.01443342
## sample estimates:
##        cor 
## -0.1753689

Figure 6.6 uses the same plotting method to show emissions per dwelling due to other energy use. This should be higher for off-gas areas which tend to be rural areas so we also present analysis by the LSOA’s urban/rural classification.

## Per dwelling T CO2e - elec emissions
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Scatter of LSOA level other energy per dwelling emissions against IMD score - who emits?

Figure 6.6: Scatter of LSOA level other energy per dwelling emissions against IMD score - who emits?

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Correlation test (pwcorr)
## 
##  Pearson's product-moment correlation
## 
## data:  credsLsoaDT$IMDScore and credsLsoaDT$CREDSelec_kgco2e2018_pdw
## t = -2.1523, df = 146, p-value = 0.03301
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.32744768 -0.01443342
## sample estimates:
##        cor 
## -0.1753689
##                  RUC11 mean_gas_kgco2e mean_elec_kgco2e
## 1: Urban city and town        1758.058         1004.407
##    mean_other_energy_kgco2e
## 1:                 117.6261

Check whether all measured energy emissions combined (gas & electricity) correlate with all emissions (in this data).

## 
##  Pearson's product-moment correlation
## 
## data:  credsLsoaDT$CREDStotal_kgco2e_pdw and credsLsoaDT$CREDSmeasuredHomeEnergy_kgco2e2018_pdw
## t = 17.213, df = 146, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.7571077 0.8655189
## sample estimates:
##       cor 
## 0.8184714
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Strong correlkation. So in theory we could (currently) use measured energy emissions as a proxy for total emissions.

Repeat for all home energy - includes estimates of emissions from oil etc

## 
##  Pearson's product-moment correlation
## 
## data:  credsLsoaDT$CREDStotal_kgco2e_pdw and credsLsoaDT$CREDSallHomeEnergy_kgco2e2018_pdw
## t = 16.017, df = 146, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.7311467 0.8501570
## sample estimates:
##       cor 
## 0.7983163
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Slightly weaker correlation…

6.2.1.3 Transport

We don’t expect to use this data as it is already taxed in a way that relates to emissions (?)

Figure 6.7 uses the same plotting method to show emissions per dwelling due to van use. Again, we present analysis by the LSOA’s urban/rural classification.

## Per dwelling T CO2e - car emissions
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Scatter of LSOA level car use per dwelling emissions against IMD score

Figure 6.7: Scatter of LSOA level car use per dwelling emissions against IMD score

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Correlation with IMD score (pwcorr)
## 
##  Pearson's product-moment correlation
## 
## data:  credsLsoaDT$IMDScore and credsLsoaDT$CREDScar_kgco2e2018_pdw
## t = -5.833, df = 146, p-value = 3.37e-08
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.5570107 -0.2940157
## sample estimates:
##        cor 
## -0.4347367
##                  RUC11 mean_car_kgco2e mean_van_kgco2e
## 1: Urban city and town        1848.645        266.0683

Figure 6.8 uses the same plotting method to show emissions per dwelling due to van use.

## Per dwelling T CO2e - van emissions
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Scatter of LSOA level van use per dwelling emissions against IMD score

Figure 6.8: Scatter of LSOA level van use per dwelling emissions against IMD score

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Correlation with IMD score (pwcorr)
## 
##  Pearson's product-moment correlation
## 
## data:  credsLsoaDT$IMDScore and credsLsoaDT$CREDSvan_kgco2e2018_pdw
## t = 0.59071, df = 146, p-value = 0.5556
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.1134079  0.2085304
## sample estimates:
##        cor 
## 0.04882944

6.2.2 Impute EPC counts

In order to estimate the LSOA level retrofit costs, we need to impute the EPC counts in each LSOA. We do this using the number of electricity meters as the presumed number of dwellings and the observed % of EPCs in each band for all dwellings with EPCs which is provided by the CREDS data. This assumes that if we had EPCs for all dwellings then the % in each band in each LSOA would stay the same. This is quite a bold assumption…

Note that the EPC database is continuously updated so more recent upgrades will not be captured in the data used for this analysis. This means the total retrofit costs are likely to be an over-estimate. The extent of this over-estimate would require the use of an updated (current) EPC data extract and is left for future work.

## N EPCs
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   211.0   341.8   409.0   466.5   548.2  1140.0
## N elec meters
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   430.0   631.5   695.5   733.8   800.8  1392.0

Correlation between high % EPC F/G or A/B and deprivation?

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Now we need to convert the % to dwellings using the number of electricity meters (see above).

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

6.2.3 Estimating the annual emissions levy

Case studies:

  • Annual carbon tax
  • Half-hourly (real time) carbon tax (not implemented) - this would only affect electricity

BEIS/ETC Carbon ‘price’

EU carbon ‘price’

BEIS Carbon ‘Value’ https://www.gov.uk/government/publications/valuing-greenhouse-gas-emissions-in-policy-appraisal/valuation-of-greenhouse-gas-emissions-for-policy-appraisal-and-evaluation#annex-1-carbon-values-in-2020-prices-per-tonne-of-co2

  • based on a Marginal Abatement Cost (MAC)
  • 2021:
    • Low: £122/T
    • Central: £245/T <- use the central value for now
    • High: £367/T

Scenario 1: apply the central value Scenario 2: apply the low/central/high as a rising block tariff for each emissions source. Set threhsolds to 33% and 66% (in absence of any other guidance!)

6.2.3.1 Scenario 1: central cost

The table below shows the overall £ GBP total for the case study area in £M.

##    beis_GBPtotal_c beis_total_c_gas beis_GBPtotal_c_elec
## 1:          435.34            44.78                26.66

The table below shows the mean per dwelling value rounded to the nearest £10.

##    beis_GBPtotal_c_perdw beis_GBPtotal_c_gas_perdw beis_GBPtotal_c_elec_perdw
## 1:                  4200                       430                        250
##    beis_GBPtotal_c_energy_perdw
## 1:                          680

Figure ?? shows the total £k per LSOA and £ per dwelling revenue using BEIS central carbon price plotted against IMD score. The tables show the LSOAs with the highest and lowest values.

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
£k per LSOA revenue using BEIS central carbon price

Figure 6.9: £k per LSOA revenue using BEIS central carbon price

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
£k per LSOA revenue using BEIS central carbon price

Figure 6.10: £k per LSOA revenue using BEIS central carbon price

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1432    2917    3789    4196    5157   11015
##     LSOA11CD     WD18NM CREDStotal_kgco2e_pdw beis_GBPtotal_c_perdw
## 1: E01017249    Shirley              44958.42             11014.812
## 2: E01017148    Bassett              43544.19             10668.326
## 3: E01017197 Freemantle              41429.10             10150.129
## 4: E01017224   Peartree              31226.09              7650.391
## 5: E01017180    Coxford              30703.76              7522.422
## 6: E01017214  Millbrook              30163.70              7390.107
##     LSOA11CD    WD18NM CREDStotal_kgco2e_pdw beis_GBPtotal_c_perdw
## 1: E01017245 Redbridge              7967.564              1952.053
## 2: E01017241 Redbridge              7871.967              1928.632
## 3: E01032738    Bevois              7870.684              1928.318
## 4: E01017182   Coxford              7344.557              1799.416
## 5: E01017139   Bargate              7015.385              1718.769
## 6: E01017140   Bargate              5845.638              1432.181

Figure ?? repeats the analysis but just for gas.

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
£k per LSOA incurred via gas using BEIS central carbon price

Figure 6.11: £k per LSOA incurred via gas using BEIS central carbon price

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
£k per LSOA incurred via gas using BEIS central carbon price

Figure 6.12: £k per LSOA incurred via gas using BEIS central carbon price

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    3.14  332.71  423.12  430.72  530.76  896.55
##     LSOA11CD     WD18NM gasTCO2e_pdw beis_GBPtotal_c_gas_perdw
## 1: E01017249    Shirley     3.659406                  896.5545
## 2: E01017148    Bassett     3.633488                  890.2047
## 3: E01017197 Freemantle     2.998158                  734.5488
## 4: E01032753  Portswood     2.945786                  721.7175
## 5: E01017252    Shirley     2.924247                  716.4405
## 6: E01017145    Bassett     2.903698                  711.4061
##     LSOA11CD   WD18NM gasTCO2e_pdw beis_GBPtotal_c_gas_perdw
## 1: E01017142  Bargate    0.6995069                171.379188
## 2: E01032748  Bargate    0.6532194                160.038752
## 3: E01017140  Bargate    0.5874720                143.930649
## 4: E01017281 Woolston    0.3330864                 81.606173
## 5: E01032755  Bargate    0.2409302                 59.027907
## 6: E01032746  Bargate    0.0128181                  3.140433

Figure ?? repeats the analysis for electricity.

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
£k per LSOA incurred via electricity using BEIS central carbon price

Figure 6.13: £k per LSOA incurred via electricity using BEIS central carbon price

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
£k per LSOA incurred via electricity using BEIS central carbon price

Figure 6.14: £k per LSOA incurred via electricity using BEIS central carbon price

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   160.6   230.0   242.3   246.1   255.8   357.7
##     LSOA11CD     WD18NM elecTCO2e_pdw beis_GBPtotal_c_elec_perdw
## 1: E01032746    Bargate      1.459952                   357.6883
## 2: E01017202  Harefield      1.299459                   318.3676
## 3: E01017270 Swaythling      1.284754                   314.7646
## 4: E01017170   Bitterne      1.265758                   310.1107
## 5: E01032748    Bargate      1.265183                   309.9698
## 6: E01017142    Bargate      1.262154                   309.2277
##     LSOA11CD     WD18NM elecTCO2e_pdw beis_GBPtotal_c_elec_perdw
## 1: E01017138    Bargate     0.8657028                   212.0972
## 2: E01017160     Bevois     0.8092219                   198.2594
## 3: E01017281   Woolston     0.7904938                   193.6710
## 4: E01017250    Shirley     0.7889987                   193.3047
## 5: E01017196 Freemantle     0.7812467                   191.4054
## 6: E01017278   Woolston     0.6554957                   160.5964

Figure ?? shows the same analysis for measured energy (elec + gas)

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
£k per LSOA incurred via electricity and gas using BEIS central carbon price

Figure 6.15: £k per LSOA incurred via electricity and gas using BEIS central carbon price

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
£k per LSOA incurred via electricity and gas using BEIS central carbon price

Figure 6.16: £k per LSOA incurred via electricity and gas using BEIS central carbon price

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   275.3   569.1   672.4   676.8   776.5  1194.7

6.2.3.2 Scenario 2: Rising block tariff

Applied at to per dwelling values (not LSOA total)

Cut at 25%, 50% - so any emissions over 50% get high carbon cost

## Cuts for total per dw
##        0%       25%       50%       75%      100% 
##  5845.638 11905.745 15464.936 21050.667 44958.416
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

##            V1 beis_GBPtotal_sc2_l_perdw beis_GBPtotal_sc2_c_perdw
##  1: 14.056160                 1452.5009                  526.8518
##  2: 18.324152                 1452.5009                  872.0019
##  3:  9.203213                 1122.7920                    0.0000
##  4:  7.015385                  855.8769                    0.0000
##  5:  5.845638                  713.1678                    0.0000
##  6: 14.007034                 1452.5009                  514.8159
##  7: 26.572009                 1452.5009                  872.0019
##  8: 25.334282                 1452.5009                  872.0019
##  9: 21.013503                 1452.5009                  872.0019
## 10: 25.055866                 1452.5009                  872.0019
##     beis_GBPtotal_sc2_h_perdw beis_GBPtotal_sc2_perdw
##  1:                     0.000               1979.3527
##  2:                  1049.332               3373.8348
##  3:                     0.000               1122.7920
##  4:                     0.000                855.8769
##  5:                     0.000                713.1678
##  6:                     0.000               1967.3167
##  7:                  4076.296               6400.7985
##  8:                  3622.050               5946.5525
##  9:                  2036.324               4360.8268
## 10:                  3519.871               5844.3740
Table 6.3: Data summary
Name …[]
Number of rows 148
Number of columns 3
Key NULL
_______________________
Column type frequency:
numeric 3
________________________
Group variables None

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
V1 0 1 17.13 7.01 5.85 11.91 15.46 21.05 44.96 ▆▇▃▁▁
beis_GBPtotal_sc2_perdw 0 1 3221.47 2302.13 713.17 1452.80 2329.22 4374.47 13148.61 ▇▃▂▁▁
beis_GBPtotal_sc2 0 1 2184016.07 1266099.70 650296.60 1113364.33 1881431.98 2831522.94 6640047.94 ▇▅▂▁▁
##    nLSOAs sum_total_sc1 sum_total_sc2
## 1:    148      435.3365      323.2344

## Saving 7 x 5 in image

## Saving 7 x 5 in image
##    CREDSgas_kgco2e2018_pdw beis_GBPgas_sc2_l_perdw
## 1:               1900.7450               165.67756
## 2:               2388.2635               165.67756
## 3:               1032.2892               125.93928
## 4:                870.0000               106.14000
## 5:                587.4720                71.67159
## 6:                699.5069                85.33984
##    CREDSgas_kgco2e2018_pdw beis_GBPgas_sc2_l_perdw beis_GBPgas_sc2_c_perdw
## 1:               1900.7450               165.67756                90.40898
## 2:               2388.2635               165.67756                90.40898
## 3:               1032.2892               125.93928                 0.00000
## 4:                870.0000               106.14000                 0.00000
## 5:                587.4720                71.67159                 0.00000
## 6:                699.5069                85.33984                 0.00000
##    beis_GBPgas_sc2_h_perdw beis_GBPgas_sc2_perdw
## 1:                63.75374             319.84029
## 2:               242.67303             498.75957
## 3:                 0.00000             125.93928
## 4:                 0.00000             106.14000
## 5:                 0.00000              71.67159
## 6:                 0.00000              85.33984
## [1] 31.10013

## Saving 7 x 5 in image
## [1] 16.02575

## Saving 7 x 5 in image
##    nLSOAs sumAllConsEmissions_GBP sumGasEmissions_GBP sumElecEmissions_GBP
## 1:    148                323.2344            31.10013             16.02575

6.2.4 Estimate retofit costs

fromAE <- 13300 fromFG <- 26800

Excludes EPC A, B & C (assumes no need to upgrade)

## To retrofit D-E
## [1] 761641591
## Number of dwellings: 57266
## To retrofit F-G
## [1] 146476937
## Number of dwellings: 5466
## To retrofit D-G
## [1] 908118528
## To retrofit D-G (mean per dwelling)
## [1] 14417.74
##    meanPerLSOA totalPerLSOA
## 1:     6135936    908118528
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Map cost

Figure 6.17: LSOA retrofit costs (upgrade EPC C to F)

##     LSOA11CD     WD18NM epc_pc_A_C retrofitSum
## 1: E01032746    Bargate   83.07087     1906205
## 2: E01032745    Bargate   85.42274     2083370
## 3: E01017264 Swaythling   62.43243     2825518
## 4: E01032748    Bargate   81.94690     3111156
## 5: E01032751    Bargate   72.26776     3461155
## 6: E01017262    Sholing   52.91829     3569217
##     LSOA11CD     WD18NM epc_pc_A_C retrofitSum
## 1: E01017154     Bevois   25.51020    14171398
## 2: E01017202  Harefield   20.62615    11080907
## 3: E01017192 Freemantle   25.22523    10179160
## 4: E01017185    Coxford   20.97130     9724814
## 5: E01017260    Sholing   14.62766     9723096
## 6: E01032753  Portswood   25.93284     9423102

6.2.5 Compare levy with costs

6.2.5.1 Scenario 1

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Repeat per dwelling

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

6.2.5.2 Scenario 2

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Repeat per dwelling

## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

6.2.6 Years to pay…

6.2.6.1 Scenario 1

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.301   2.707   3.745   4.032   4.977  10.307
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   11.69   18.00   21.43   22.74   25.60   57.64
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image

## Saving 7 x 5 in image
##     LSOA11CD WD18NM retrofitSum  epc_D_pc  epc_E_pc   epc_F_pc    epc_G_pc
## 1: E01017154 Bevois    14171398 0.1505102 0.2806122 0.19132653 0.122448980
## 2: E01017158 Bevois     6302740 0.3222506 0.1202046 0.01662404 0.002557545
## 3: E01017160 Bevois     5743744 0.4450172 0.1391753 0.01374570 0.005154639

## Saving 7 x 5 in image

## Saving 7 x 5 in image

What happens in Year 2 totally depends on the rate of upgrades…

6.2.6.2 Scenario 2

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.090   3.216   6.080   6.824   9.741  20.699
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   11.69   18.00   21.43   22.74   25.60   57.64
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

## Saving 7 x 5 in image

## Saving 7 x 5 in image
##     LSOA11CD WD18NM retrofitSum  epc_D_pc  epc_E_pc   epc_F_pc    epc_G_pc
## 1: E01017154 Bevois    14171398 0.1505102 0.2806122 0.19132653 0.122448980
## 2: E01017158 Bevois     6302740 0.3222506 0.1202046 0.01662404 0.002557545
## 3: E01017160 Bevois     5743744 0.4450172 0.1391753 0.01374570 0.005154639

## Saving 7 x 5 in image

## Saving 7 x 5 in image

What happens in Year 2 totally depends on the rate of upgrades…

6.2.6.3 Compare scenarios

## Saving 7 x 5 in image

7 R environment

7.1 R packages used

  • base R (R Core Team 2016)
  • bookdown (Xie 2016a)
  • data.table (Dowle et al. 2015)
  • ggplot2 (Wickham 2009)
  • kableExtra (Zhu 2018)
  • knitr (Xie 2016b)
  • rmarkdown (Allaire et al. 2018)
  • skimr (Arino de la Rubia et al. 2017)

7.2 Session info

8 Data Tables

I don’t know if this will work…

## Doesn't

References

Allaire, JJ, Yihui Xie, Jonathan McPherson, Javier Luraschi, Kevin Ushey, Aron Atkins, Hadley Wickham, Joe Cheng, and Winston Chang. 2018. Rmarkdown: Dynamic Documents for r. https://CRAN.R-project.org/package=rmarkdown.
Arino de la Rubia, Eduardo, Hao Zhu, Shannon Ellis, Elin Waring, and Michael Quinn. 2017. Skimr: Skimr. https://github.com/ropenscilabs/skimr.
Dowle, M, A Srinivasan, T Short, S Lianoglou with contributions from R Saporta, and E Antonyan. 2015. Data.table: Extension of Data.frame. https://CRAN.R-project.org/package=data.table.
R Core Team. 2016. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Wickham, Hadley. 2009. Ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. http://ggplot2.org.
Xie, Yihui. 2016a. Bookdown: Authoring Books and Technical Documents with R Markdown. Boca Raton, Florida: Chapman; Hall/CRC. https://github.com/rstudio/bookdown.
———. 2016b. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://CRAN.R-project.org/package=knitr.
Zhu, Hao. 2018. kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax. https://CRAN.R-project.org/package=kableExtra.